package com.zl.cms.service;

import com.zl.cms.model.Channel;
import com.zl.cms.model.ChannelTree;

import java.util.List;

/**
 * User: zl email:c3tc3tc3t@126.com Date: 14-2-2 Time: 下午3:34
 */
public interface IChannelService {
  /**
   * 添加栏目
   * 
   * @param channel 被添加的栏目对象
   * @param pid 栏目父id
   */
  public void add(Channel channel, Integer pid);

  /**
   * 更新栏目
   * 
   * @param channel 被更新栏目对象
   */
  public void update(Channel channel);

  /**
   * 删除栏目
   * 
   * @param id 被删除栏目id
   */
  public void delete(int id);


  /**
   * 清空栏目的文章
   */
  public void clearTopic(int id);

  /**
   * 显示一个栏目信息
   * 
   * @param id 被现实栏目id
   * @return 返回栏目id
   */
  public Channel load(int id);

  /**
   * 查询一个栏目的子栏目,先检查SystemContext中是否有排序，没有排序将orders加进去
   * 
   * @param id 子栏目的父id
   * @return 返回栏目列表
   */
  public List<Channel> listByParent(Integer id);

  /**
   * 返回显示所有栏目,返回的栏目用于显示栏目树
   * 
   * @return 对象列表
   */
  public List<ChannelTree> generateTree();

  /**
   * 根据父类对象获取子类栏目，用于显示栏目树 如果pid为空,返回所有作为父栏目的对象列表
   * 
   * @param pid 父id
   * @return 对象列表
   */
  public List<ChannelTree> generateTreeByParent(Integer pid);

	/**
	 * 更新栏目排序顺序
	 * @param ids 被更新的栏目id集合 集合里id的顺序就是新的栏目的orders顺序
	 */
	public void  updateSort(Integer[] ids) ;

	/**
	 * 遍历出不是导航栏目和状态为启用的栏目
	 * @return 栏目列表
	 */
	public List<Channel> listPublishChannel();
}
